package cn.com.dcsgo.service;

import cn.com.dcsgo.domain.MemberAddr;
import cn.com.dcsgo.dto.MemberAddrAddDTO;
import cn.com.dcsgo.dto.MemberAddrUpdateDTO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 针对表【member_addr(用户配送地址)】的数据库操作Service
 *
 * @author Dcsgo
 * @since 2025-10-30 15:57:19
 */
public interface MemberAddrService extends IService<MemberAddr> {

    /**
     * 获取会员收货地址列表
     *
     * @param openid 会员Id
     * @return 会员收货地址列表
     */
    List<MemberAddr> getListByOpenid(String openid);

    /**
     * 更改默认收货地址
     *
     * @param openid 会员ID
     * @param addrId 收货地址ID
     * @return true-更改成功，false-更改失败
     */
    boolean updateDefaultAddr(String openid, Long addrId);

    /**
     * 添加收货地址
     *
     * @param addrAddDTO 收货地址信息
     * @param openid     会员ID
     * @return true-添加成功，false-添加失败
     */
    boolean save(MemberAddrAddDTO addrAddDTO, String openid);

    /**
     * 重写 getById 加上缓存
     *
     * @param addrId 地址ID
     * @return 地址信息
     */
    MemberAddr getById(Long addrId);

    /**
     * 修改收货地址
     *
     * @param updateDTO 收货地址信息
     * @param openid    会员ID（删缓存用，不会更新会员ID）
     * @return true-修改成功，false-修改失败
     */

    boolean update(MemberAddrUpdateDTO updateDTO, String openid);

    /**
     * 删除地址（重写父类方法，添加清缓存功能）
     *
     * @param addrId 地址ID
     * @param openid 会员ID （用于清缓存）
     * @return true-删除成功，false-删除失败
     */
    boolean removeById(Long addrId, String openid);
}
